package cn.xzqwjw.taskmanager.service;

import cn.xzqwjw.taskmanager.domain.pojo.SysConfig;
import cn.xzqwjw.taskmanager.domain.vo.UploadConfigVo;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * @author rush
 */
public interface SysConfigService extends IService<SysConfig> {

  /**
   * 添加系统设置
   *
   * @param sysConfig 要添加的系统设置对象
   * @return 返回给 controller 用于输出 response 的 json 格式的字符串
   */
  String add(SysConfig sysConfig);

  /**
   * 批量添加系统设置
   *
   * @param list 多个系统设置List
   * @return 返回给 controller 用于输出 response 的 json 格式的字符串
   */
  String addBatch(List<SysConfig> list);

  /**
   * 根据id删除系统设置
   *
   * @param id 系统设置id
   * @return 返回给 controller 用于输出 response 的 json 格式的字符串
   */
  String delById(int id);

  /**
   * 修改系统设置全部值
   *
   * @param sysConfig 要修改的系统设置对象
   * @return 返回给 controller 用于输出 response 的 json 格式的字符串
   */
  String modifyAll(SysConfig sysConfig);

  /**
   * 修改系统设置部分值
   *
   * @param id         要修改的系统设置对象id
   * @param paramsJson 要修改的系统设置对象
   * @return 返回给 controller 用于输出 response 的 json 格式的字符串
   */
  String patchByParams(int id, String paramsJson);

  /**
   * 根据id得到一条记录
   *
   * @param id 要查询的id
   * @return 返回给 controller 用于输出 response 的 json 格式的字符串
   */
  String queryById(int id);

  /**
   * 添加系统设置时要先看看系统设置名是否已经用过
   *
   * @param label 系统设置名
   * @return 返回给 controller 用于输出 response 的 json 格式的字符串
   */
  String checkLabel(String label, int id);

  /**
   * 如果有标签，则根据标签得到所有设置列表
   * 如果无，则到所有设置列表
   *
   * @return 返回给 controller 用于输出 response 的 json 格式的字符串
   */
  String listAll(String tag);

  /**
   * 得到文件上传的预定值
   *
   * @return 返回给UlFileService调用的设置了默认值的 UlFileConfigDto
   */
  UploadConfigVo getUploadConfigDefault();

}

